package sip_core

type AlarmRecord struct {
	//报警序号(必选)
	AlarmNO string `xml:"AlarmSeq"`
	//报警时间(必选)
	AlarmTime string `xml:"AlarmTime"`
	//报警类别(必选)
	AlarmClass string `xml:"AlarmClass"`
	//报警级别(必选)
	AlarmPriority string `xml:"AlarmPriority"`
	//报警方式(必选)
	AlarmMethod string `xml:"AlarmMethod"`
	//经度信息(可选)
	Longitude string `xml:"Longitude"`
	//纬度信息(可选)
	Latitude string `xml:"Latitude"`
	//报警人或报警单位地址(可选)
	Address string `xml:"Address"`
	//报警人姓名或报警单位名称(可选)
	Name string `xml:"Name"`
	//报警人性别(可选)
	Sex string `xml:"Sex"`
	//报警人联系方式(可选)
	Contact string `xml:"Contact"`
	//车辆牌号(可选),可多项
	CarPlate string `xml:"CarPlate"`
	//号牌种类(可选),可多项
	PlateType string `xml:"PlateType"`
	//受伤害对象(可选),可多项
	Victim string `xml:"Victim"`
	//接警员编号(可选)
	Processor string `xml:"Processor"`
	//警情描述(可选)
	Alarminfo string `xml:"Alarminfo"`
	//其他信息(可选),可多项
	Info string `xml:"Info"`
}

//MPAlarmRecordType 管理平台报警记录类型
type MPAlarmRecordType struct {
	*AlarmRecord
	//报警源(必选)
	DeviceID string `xml:"NvrDeviceSipId"`
	//案发地址(可选)
	AlarmAddress string `xml:"AlarmAddress"`
	//原始报警序号(可选)
	OriginalNO string `xml:"OriginalNO"`
	//原始报警信息(可选)
	OriginalInfo string `xml:"OriginalInfo"`
	//报警发送者(可选)
	Sender string `xml:"Sender"`
	//警情级别(可选)
	AlarmLevel string `xml:"AlarmLevel"`
	//处理信息(可选)
	Disposal string `xml:"Disposal"`
}

//ECSAlarmRecordType 综合接处警系统报警记录类型
type ECSAlarmRecordType struct {
	*AlarmRecord
	// 案发地址(必选)
	AlarmAddress string `xml:"AlarmAddress"`
	// 报警电话(必选)
	AlarmTelephone string `xml:"AlarmTelephone"`
	//接警员姓名
	SrecipientName string `xml:"SrecipientName"`
	//案件状态
	NsStatus string `xml:"NsStatus"`
	//案件类型
	NCallType string `xml:"NCallType"`
}

//TGSAlarmRecordType “卡口”系统报警记录类型
type TGSAlarmRecordType struct {
	//报警时间(必选)
	AlarmTime string `xml:"AlarmTime"`
	//卡口编号(必选)
	TollgateID string `xml:"TollgateID"`
	//车牌号码(必选)
	CarPlate string `xml:"CarPlate"`
	//号牌种类(必选)
	PlateType string `xml:"PlateType"`
	//布控类别(必选)
	DefenceType string `xml:"DefenceType"`
	//图片路径
	ImageURL string `xml:"ImageURL"`
	//行驶方向
	Direction string `xml:"Direction"`
	//车辆速度
	VehicleSpeed int `xml:"VehicleSpeed"`
	//经过时刻
	PassTime string `xml:"PassTime"`
}

//MPAlarmRecordListType 管理平台报警记录列表类型
type MPAlarmRecordListType struct {
	SendRecordNum int `xml:"SendRecordNum,attr"`
	// 管理平台报警记录
	AlarmRecord []MPAlarmRecordType `xml:"AlarmRecord"`
}

//ECSAlarmRecordListType 综合接处警系统报警记录列表类型
type ECSAlarmRecordListType struct {
	SendRecordNum int `xml:"SendRecordNum,attr"`
	// 综合接处警系统报警记录
	AlarmRecord []ECSAlarmRecordType `xml:"AlarmRecord"`
}

//TGSAlarmRecordListType “卡口”系统报警记录列表类型
type TGSAlarmRecordListType struct {
	SendRecordNum int `xml:"SendRecordNum,attr"`
	//“卡口”系统报警记录
	AlarmRecord []TGSAlarmRecordType `xml:"AlarmRecord"`
}

// 通知消息
/*
	<elementname="Notify">
		<complexTypecontent="elementOnly">
			<sequence>
				<! -- 通知请求的命令序列,如下面6种信息传递-->
			</sequence>
		</complexType>
	</element>
*/

//MPAlarm 管理平台发送报警xml
type MPAlarm struct {
	//CmdType = "MPAlarm"
	*SipBaseXML
	//管理平台报警记录
	AlarmContent MPAlarmRecordType `xml:"AlarmContent"`
}

//MPAlarmToESCNotify 管理平台向综合接处警系统发送报警通知
type MPAlarmToESCNotify struct {
	*MPAlarm
}

//MPAlarmToOtherCityNotify 管理平台向其他城市信息系统发送报警通知
type MPAlarmToOtherCityNotify struct {
	*MPAlarm
}

//ECSAlarmNotify 综合接处警系统向管理平台发送报警通知
type ECSAlarmNotify struct {
	*SipBaseXML
	//管理平台报警记录
	AlarmContent ECSAlarmRecordType `xml:"AlarmContent"`
}

//TGSAlarmNotify “卡口”系统向管理平台发送报警通知
type TGSAlarmNotify struct {
	*SipBaseXML
	//管理平台报警记录
	AlarmContent TGSAlarmRecordType `xml:"AlarmContent"`
}

//ConfigDefenceNotify 管理平台向“卡口”系统发送布控/撤控通知
type ConfigDefenceNotify struct {
	*SipBaseXML
	//操作类型:true表示布控、false表示撤控
	Type bool `xml:"Type"`
	//卡口编号
	TollgateID string `xml:"TollgateID"`
	//布控/撤控的车辆号牌
	CarPlate string `xml:"CarPlate"`
	//号牌种类
	PlateType string `xml:"PlateType"`
	//布控类别
	DefenceType string `xml:"DefenceType"`
	//布控/撤控的开始时间
	DefenceTime string `xml:"DefenceTime"`
}

//查询消息
/*
	<elementname="Query">
		<complexTypecontent="elementOnly">
			<sequence>
				<! -- 查询请求命令序列,具体包括下面5种请求-->
			</sequence>
		</complexType>
	</element>
*/

//AlarmRecordListQuery 报警记录查询
type AlarmRecordListQuery struct {
	*SipBaseXML
	//时间范围(可选)
	//开始时间(可选)
	BeginTime string `xml:"BeginTime"`
	//结束时间(可选)
	EndTime string `xml:"EndTime"`
	//报警级别(可选)
	AlarmPriority string `xml:"AlarmPriority"`
	//报警方式(可选)
	AlarmMethod string `xml:"AlarmMethod"`
	//报警类别(可选)
	AlarmClass string `xml:"AlarmClass"`
}

//MPAlarmRecordListQuery 综合接处警系统检索管理平台的报警记录
type MPAlarmRecordListESCQuery struct {
	//CmdType = MPAlarmRecordList
	*AlarmRecordListQuery
	//报警源地域范围(可选)
	AlarmDeviceRange string `xml:"AlarmDeviceRange"`
}

//MPAlarmRecordListOtherCityQuery 其他城市信息系统检索管理平台的报警记录
type MPAlarmRecordListOtherCityQuery struct {
	//CmdType = MPAlarmRecordList
	*AlarmRecordListQuery
	//报警源地域范围(可选)
	AlarmDeviceRange string `xml:"AlarmDeviceRange"`
}

//ECSAlarmRecordListQuery 管理平台检索综合接处警系统的报警记录
type ECSAlarmRecordListQuery struct {
	//CmdType = ECSAlarmRecordList
	*AlarmRecordListQuery
	//案发地域范围(可选)
	AlarmAddressRange string `xml:"AlarmAddressRange"`
}

//TGSAlarmRecordListQuery 管理平台检索“卡口”系统的报警记录
type TGSAlarmRecordListQuery struct {
	*SipBaseXML
	//开始时间(可选)
	BeginTime string `xml:"BeginTime"`
	//结束时间(可选)
	EndTime string `xml:"EndTime"`
	//卡口编号(可选)
	TollgateID string `xml:"TollgateID"`
	//车牌号码(可选)
	CarPlate string `xml:"CarPlate"`
	//号牌种类(可选)
	PlateType string `xml:"PlateType"`
}

//查询消息的应答消息
/*
	<elementname="Response">
		<complexTypecontent="elementOnly">
			<sequence>
				<! -- 查询请求的应答信息,如下面5种应答-->
			</sequence>
		</complexType>
	</element>
*/

//AlarmRecordListResponse 报警记录应答消息
type AlarmRecordListResponse struct {
	*SipBaseXML
	//响应结果
	Result ResultType `xml:"Result"`
	//检索到的记录总数
	RealRecordNum int `xml:"RealRecordNum"`
	//实际发送的记录数
	SendRecordNum int `xml:"SendRecordNum"`
}

//MPAlarmRecordListResponse 综合接处警系统检索管理平台的报警记录的应答消息
type MPAlarmRecordListESCResponse struct {
	//CmdType = MPAlarmRecordList
	*AlarmRecordListResponse
	// 检索到的管理平台报警记录列表
	RecordList MPAlarmRecordListType `xml:"RecordList"`
}

//MPAlarmRecordListOtherCityResponse 其他城市信息系统检索管理平台的报警记录的应答消息
type MPAlarmRecordListOtherCityResponse struct {
	//CmdType = MPAlarmRecordList
	*AlarmRecordListResponse
	//检索到的管理平台报警记录列表
	RecordList MPAlarmRecordListType `xml:"RecordList"`
}

//ECSAlarmRecordListResponse 管理平台检索综合接处警系统的报警记录的应答消息
type ECSAlarmRecordListResponse struct {
	//CmdType = ECSAlarmRecordList
	*AlarmRecordListResponse
	//检索到的综合接处警系统报警记录列表
	RecordList ECSAlarmRecordListType `xml:"RecordList"`
}

//TGSAlarmRecordList 管理平台检索“卡口”系统的报警记录的应答消息
type TGSAlarmRecordList struct {
	//CmdType = TGSAlarmRecordList
	*AlarmRecordListResponse
	//检索到的综合接处警系统报警记录列表
	RecordList TGSAlarmRecordListType `xml:"RecordList"`
}

//通知消息的应答消息
/*
	<elementname="Response">
		<complexTypecontent="elementOnly">
			<sequence>
				<! -- 通知请求的应答信息,如下面6种信息-->
			</sequence>
		</complexType>
	/element>
*/

//AlarmNotifyResponse 报警通知的应答
type AlarmNotifyResponse struct {
	*SipBaseXML
	//执行结果标志(必选)
	Result   ResultType `xml:"Result"`
	DeviceID string     `xml:"DeviceID"`
}

//MPAlarmNotifyESCResponse 管理平台向综合接处警系统发送报警通知的应答
type MPAlarmNotifyESCResponse struct {
	//CmdType = MPAlarm
	*AlarmNotifyResponse
}

//MPAlarmNotifyOtherCityResponse 管理平台向其他城市信息系统发送报警通知的应答
type MPAlarmNotifyOtherCityResponse struct {
	//CmdType = MPAlarm
	*AlarmNotifyResponse
}

//ECSAlarmNotifyResponse 综合接处警系统向管理平台发送报警通知的应答
type ECSAlarmNotifyResponse struct {
	//CmdType = ECSAlarm
	*AlarmNotifyResponse
}

//TGSAlarmNotifyResponse “卡口”系统向管理平台发送报警通知的应答
type TGSAlarmNotifyResponse struct {
	//CmdType = TGSAlarm
	*AlarmNotifyResponse
}

//ConfigDefenceResponse 管理平台向“卡口”系统发送布控/撤控通知的应答
type ConfigDefenceResponse struct {
	//CmdType = ConfigDefence
	*AlarmNotifyResponse
	//扩展信息,可多项
	Info string `xml:"Info"`
}
